"""
@name : ip存储与瓦尔登湖
@author : zhaosiyuan
@projectname: PythonProject
"""
#IP存储与读取文件统计IP频率
# import random
# dict1 = {}
# with open("ips.txt", "a") as fp:
#     fp.truncate()   #再次运行要清空原文件
#     for i in range(100):   #生成一个100行的文件
#         str1 = random.randint(1, 256)  #随机选取1到256之间的数
#         fp.write(f'172.25.254.{str1}\n')  #把IP写进文件
#         if str1 in dict1:
#             dict1[str1] = dict1[str1] + 1   #将得到的地址和其出现的次数用字典存储，如果该IP地址已经在字典里，次数加1
#         else:
#             dict1[str1] = 1
# n = 10
# list1 = sorted(dict1.items(), key=lambda y: y[1], reverse=True) #将得到的字典按照values值从小到大排序
# for i, j in list1:
#     n = n - 1
#     print(f'出现次数第{10-n}的是172.25.254.{i},次数为{j}次')
#     if n < 0:
#         break


# 瓦尔登湖
# 词频统计
import string
with open("Walden", encoding='utf-8-sig') as fp:  # 使用utf-8-sig可以避免在文件开头出现\ufeff
    str1 = fp.read()
biaodian = string.punctuation + '0123456789'  # 将所有的标点和数字存于字符串biaodian中
# 依次替换所有的标点和数字
for i in biaodian:
    str1 = str1.replace(i, ' ')
# 当不给split函数传递任何参数时，分隔符sep会采用任意形式的空白字符：空格、tab、换行、回车以及formfeed
list1 = list(str1.split())
dict1 = {}
for j in list1:
    # 将单词全部转换为小写
    x = j.lower()
    # 如果单词已经存入字典，则出现次数+1
    if x in dict1:
        dict1[x] = dict1[x] + 1
    # 如果单词为第一次出现，则为第一次出现
    else:
        dict1[x] = 1
print(dict1)



